/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import model.Usuario;
import model.Viaje;
import java.util.List;
import model.Itinerario;
import model.Lugar;
import model.Participante;
import model.SugerenciaViaje;
import org.apache.log4j.Logger;
import service.ItinerarioService;
import service.UsuarioService;
import service.LugarService;
import service.ParticipanteService;
import service.SugerenciaService;
import service.ViajeService;
import service.VotoService;
import funcion.GeneratePDF;

/**
 *
 * @author MIS DOCUMENTOS
 */
public class GenerarPDF extends AbstractCommandController {

        private UsuarioService usuarioService;
        private ViajeService viajeService;
        private SugerenciaService sugerenciaService;
        private ItinerarioService itinerarioService;
        private ParticipanteService participanteService;
        private static Logger loggers = null;

    public void setViajeService(ViajeService viajeService) {
        this.viajeService = viajeService;
    }

    public void setItinerarioService(ItinerarioService itinerarioService) {
        this.itinerarioService = itinerarioService;
    }

    public void setParticipanteService(ParticipanteService participanteService) {
        this.participanteService = participanteService;
    }

    public void setSugerenciaService(SugerenciaService sugerenciaService) {
        this.sugerenciaService = sugerenciaService;
    }

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public GenerarPDF() {
        this.setCommandClass(Usuario.class);
    }

    @Override
     protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object form, BindException errors) throws Exception {
        Map model = new HashMap();
        GeneratePDF generarpdf = new GeneratePDF();
        Usuario user2;
        Viaje via;
        user2 = (Usuario) usuarioService.getUsuario(Long.parseLong(request.getParameter("ux")));
        via = (Viaje) viajeService.getViaje(Long.parseLong(request.getParameter("mv")));
        SugerenciaViaje SV1;
        List sug;
        sug = itinerarioService.getListaItinerario(Long.parseLong(request.getParameter("mv")));
        List sugerencias = new ArrayList();
        for (int i = 0; i < sug.size(); i++){
            Itinerario it2;
            it2 = (Itinerario) sug.get(i);
            SugerenciaViaje svpdf;
            svpdf = (SugerenciaViaje) sugerenciaService.getSugerenciaViaje(it2.getSugerenciaViaje().getIdSugviaje());
            sugerencias.add(svpdf);
        }
        List partic;
        partic = participanteService.getViajesPart2(Long.parseLong(request.getParameter("mv")));
        List usuarios = new ArrayList();
        for (int i = 0; i < partic.size(); i++){
            Participante p2;
            p2 = (Participante) partic.get(i);
            Usuario Usa;
            Usa = (Usuario) usuarioService.getUsuario(p2.getUsuario().getIdUsuario());
            usuarios.add(Usa);
        }
        System.out.println("geral aqui vamos por el PDF");
        generarpdf.hacerpdf(via, sug, usuarios);
        
        List ruta;
        List lugar = new ArrayList();
        List idIti = new ArrayList();
        ruta = itinerarioService.getListaItinerario(via.getIdViaje());
        for (int i = 0; i < ruta.size(); i++){
            SugerenciaViaje sviaje;
            Itinerario ite;
            ite = (Itinerario) ruta.get(i);
            sviaje = (SugerenciaViaje) sugerenciaService.getSugerenciaViaje(ite.getSugerenciaViaje().getIdSugviaje());
            lugar.add(sviaje.getNombre());
            idIti.add(ite.getIdIti());
        }
        request.getSession().setAttribute("clienteList", null);
        model.put("usuario", user2);
        model.put("viaje", via);
        model.put("idItinerario",idIti);
        model.put("LugarV",lugar);
        return new ModelAndView("VerItinerario", model);
    }


}
